package com.offcn.sellergoods.feign;
import com.offcn.common.entity.PageResult;
import com.offcn.common.entity.Result;
import com.offcn.sellergoods.pojo.Item;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;

/****
 * @Author:ujiuye
 * @Description:
 * @Date 2021/2/1 14:19
 *****/
@FeignClient(value="DYM-SELLERGOODS")
@RequestMapping("/item")
public interface ItemFeign {

    /**
     * Item分页条件搜索实现
     *
     * @param item 项
     * @param page 页面
     * @param size 大小
     * @return {@link Result}<{@link PageResult}<{@link Item}>>
     */
    @PostMapping("/search/{page}/{size}" )
    Result<PageResult<Item>> findPage(@RequestBody(required = false) Item item, @PathVariable(value = "page")  int page, @PathVariable(value = "size")  int size);

    /**
     * Item分页搜索实现
     *
     * @param page:当前页
     * @param size:每页显示多少条
     * @return {@link Result}<{@link PageResult}<{@link Item}>>
     */
    @GetMapping("/search/{page}/{size}" )
    Result<PageResult<Item>> findPage(@PathVariable(value = "page")  int page, @PathVariable(value = "size")  int size);

    /**
     * 多条件搜索品牌数据
     *
     * @param item 项
     * @return {@link Result}<{@link List}<{@link Item}>>
     */
    @PostMapping("/search" )
    Result<List<Item>> findList(@RequestBody(required = false) Item item);

    /**
     * 根据ID删除品牌数据
     *
     * @param id id
     * @return {@link Result}
     */
    @DeleteMapping("/{id}" )
    Result delete(@PathVariable(value = "id") Long id);

    /**
     * 修改Item数据
     *
     * @param item 项
     * @param id   id
     * @return {@link Result}
     */
    @PutMapping("/{id}")
    Result update(@RequestBody Item item,@PathVariable(value = "id") Long id);

    /**
     * 新增Item数据
     *
     * @param item 项
     * @return {@link Result}
     */
    @PostMapping()
    Result add(@RequestBody Item item);

    /**
     * 根据ID查询Item数据
     *
     * @param id id
     * @return {@link Result}<{@link Item}>
     */
    @GetMapping("/{id}")
    Result<Item> findById(@PathVariable(value = "id") Long id);

    /**
     * 查询Item全部数据
     *
     * @return {@link Result}<{@link List}<{@link Item}>>
     */
    @GetMapping()
    Result<List<Item>> findAll();

    /**
     * 按照状态查询数据
     *
     * @param status 状态
     * @return {@link Result}<{@link List}<{@link Item}>>
     */
    @GetMapping("/status/{status}")
    public Result<List<Item>> status(@PathVariable(value = "status", required = false) String status);

    /**
     * 库存递减
     * @param username  用户名
     * @return
     */
    @PostMapping(value = "/decr/count")
    public Result decrCount(@RequestParam(value = "username")String username);
}